package com.nuanshui.heatedloan.userinfo.test;

import com.alibaba.dubbo.config.annotation.Reference;
import com.nuanshui.heatedloan.aliases.IdTypeHandler;
import com.nuanshui.heatedloan.constant.GlobalParam;
import com.nuanshui.heatedloan.pageable.Pager;
import com.nuanshui.heatedloan.userinfo.facade.UserAuthService;
import com.nuanshui.heatedloan.userinfo.facade.UserFansRelationService;
import com.nuanshui.heatedloan.userinfo.model.UserFansRelation;
import com.nuanshui.heatedloan.userinfo.vo.UserVo;
import org.junit.Assert;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.List;

/**
 * Created by dutay on 2017/7/5.
 */
@Component
public class UserFansRelationServiceTest1 implements InitializingBean {
    @Reference(url = GlobalParam.USER_DUBBO_SERVER, timeout = GlobalParam.DUBBO_SERVER_TIME_OUT,version = GlobalParam.USER_DUBBO_SERVER_VERSION)
    private UserFansRelationService userFansRelationService;
    @Override
    public void afterPropertiesSet() throws Exception {

        // insertTest();
        // countInterestedByUserIdTest();
        // countFansByUserIdTest();
        //loadFansByUserIdTest();
        // loadFansIdsByUserIdTest();
        //loadUserFollowersTest();
        //deleteTest();
        // isFansTest();
        //findInterestedUserTest();
        //  findAllUserFansTest();
        //  findUserFansTest();
        //findUserFansCountTest();


    }
    void findUserFansCountTest(){
        List<HashMap<String,Long>> list7 = userFansRelationService.findUserFansCount();
        //获取所有用户的粉丝数
    }
    void findUserFansTest(){
        Pageable pageable1 =new Pager<>(1,10);
        List<UserVo> list6= userFansRelationService.findUserFans(IdTypeHandler.encode(331),IdTypeHandler.encode(331),pageable1);
        // 分页获取用户的粉丝数
    }
    void findAllUserFansTest(){
        List<UserVo> list5 = userFansRelationService.findAllUserFans(IdTypeHandler.encode(331),IdTypeHandler.encode(331));

        // 获取用户的粉丝数
    }
    void findInterestedUserTest(){
        Pageable pageable =new Pager<>(1,2);
        List<UserVo> list4 = userFansRelationService.findInterestedUser(IdTypeHandler.encode(331),IdTypeHandler.encode(331),pageable);
        System.out.println(list4);
        // 获取用户的关注用户,并分页，虽然正确了，但是我有疑问。
        // 我理解的没有错误，String userId, String loginedId,就是应该传一样的。
    }
    void isFansTest (){
        Boolean a =  userFansRelationService.isFans(IdTypeHandler.encode(331),IdTypeHandler.encode(1));
        Boolean b =  userFansRelationService.isFans(IdTypeHandler.encode(331),IdTypeHandler.encode(376));
        System.out.println("__________________________________________________a= " + a);
        System.out.println("__________________________________________________b=" + b);

        /**
         * 判断是否是该用户的粉丝
         * @param sourceUserId   关注者
         * @param targetUserId   被关注者
         * @return

        Boolean isFans(String sourceUserId, String targetUserId);
        判断某个用户是否是当前用户的fans,我已经晕掉了
        331关注的1，311 是1的粉丝,331不是376的粉丝
         */

    }
    void deleteTest(){
        userFansRelationService.delete(IdTypeHandler.encode(331),IdTypeHandler.encode(332));
        // 取消关注，当前用户（sourceUserId）去取消关注用户（targetUserId）
        // 运行成功，users_fans，少了一条数据。
    }
    void loadUserFollowersTest(){
        List<String> list3 = userFansRelationService.loadUserFollowers(IdTypeHandler.encode(331));
        Assert.assertNotNull(list3);
        //获取用户粉丝数，前面不是有个ountFansByUserId 了，为什么再获取一次啊,好吧，返回的类型不同。
    }
    void loadFansIdsByUserIdTest(){
        List<String> list2 = userFansRelationService.loadFansIdsByUserId(IdTypeHandler.encode(331));
        Assert.assertTrue(list2.size()==3);

        //获取当前用户的粉丝id列表。
    }
    void loadFansByUserIdTest(){
        List<UserFansRelation> list1 = userFansRelationService.loadFansByUserId(IdTypeHandler.encode(331));
        System.out.println("___________________________________________________"  + list1);
        Assert.assertNotNull(list1);
        // 获取当前用户的粉丝列表。
    }

    void countFansByUserIdTest(){
        Long j = userFansRelationService.countFansByUserId(IdTypeHandler.encode(331));
        System.out.println("--------------------------------------------j="+ j);
        Assert.assertTrue(j==3);

        //获取当前用户的粉丝数量
        // 331有3个粉丝。
    }
    void countInterestedByUserIdTest(){
        Long i = userFansRelationService.countInterestedByUserId(IdTypeHandler.encode(331));
        // Long i = userFansRelationService.countFansByUserId("331");
        System.out.println("----------------------------------------------"+i);
        Assert.assertTrue(i==4);

        /* 获取当前用户关注了多少人。为什么我把id从1换成331，直接运行的时候报错了呢？
           打断点进来，id为1的用户关注了0人，id为331的用户关注了1人。
           我把user表331改成2了。改回去了。
           运行7，8遍都是错的，怎么又好了，什么都没改啊！无语了。
        */
    }
    void insertTest(){
        //  userFansRelationService.insert(IdTypeHandler.encode(331),IdTypeHandler.encode(332));
        // userFansRelationService.insert(IdTypeHandler.encode(331),IdTypeHandler.encode(333));
        //  userFansRelationService.insert(IdTypeHandler.encode(331),IdTypeHandler.encode(354));
        userFansRelationService.insert(IdTypeHandler.encode(372),IdTypeHandler.encode(331));
        userFansRelationService.insert(IdTypeHandler.encode(374),IdTypeHandler.encode(331));
        userFansRelationService.insert(IdTypeHandler.encode(376),IdTypeHandler.encode(331));

        // 当前用户（sourceUserId）去关注一个用户（targetUserId）,运行成功，
    }


}

